from core.basic.skill import 技能
from core.basic.character import Character
from core.basic.skill import 主动技能, 被动技能


class 技能0(被动技能):
    名称 = '乖离：虚无'
    所在等级 = 15
    等级上限 = 20
    基础等级 = 10
    关联技能 = ['次元：虚影', '次元：跃迁', '次元：离子束', '次元：坠落', '次元：万花镜', '次元：粒子风暴', '次元：时空磁场', '次元：粒子波',
            '次元：思维聚爆', '次元：奇点', '禁断之盛宴', '未明·次元崩坏']  # 次元：系技能

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1. + 0.015 * self.等级, 5)


class 技能1(主动技能):
    名称 = '次元：坠落'
    所在等级 = 15
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [30, 280]
    # 基础伤害
    data0 = [int(i*1.198*1.139) for i in [0, 444, 489, 534, 579, 624, 669, 714, 759, 804, 849, 894, 939, 984, 1029, 1074, 1119, 1165, 1210, 1255, 1300, 1345, 1390, 1435, 1480, 1525, 1570, 1615, 1660, 1705, 1750, 1795, 1840, 1885,
                                          1930, 1976, 2021, 2066, 2111, 2156, 2201, 2246, 2291, 2336, 2381, 2426, 2471, 2516, 2561, 2606, 2651, 2696, 2741, 2787, 2832, 2877, 2922, 2967, 3012, 3057, 3102, 3147, 3192, 3237, 3282, 3327, 3372, 3417, 3462, 3507, 3552]]
    hit0 = 1
    data1 = [int(i*1.198*1.139) for i in [0, 1508, 1661, 1814, 1967, 2120, 2273, 2426, 2579, 2732, 2885, 3038, 3191, 3344, 3497, 3650, 3803, 3956, 4109, 4262, 4415, 4568, 4722, 4875, 5028, 5181, 5334, 5487, 5640, 5793, 5946, 6099, 6252, 6405,
                                          6558, 6711, 6864, 7017, 7170, 7323, 7476, 7629, 7782, 7935, 8088, 8241, 8394, 8547, 8700, 8853, 9006, 9159, 9312, 9465, 9618, 9771, 9924, 10078, 10231, 10384, 10537, 10690, 10843, 10996, 11149, 11302, 11455, 11608, 11761, 11914, 12067]]
    hit1 = 1
    # 30%概率触发箱子，额外伤害
    data2 = [int(i*1.198) for i in [0, 1901, 2093, 2286, 2479, 2672, 2865, 3058, 3251, 3443, 3636, 3829, 4022, 4215, 4408, 4601, 4793, 4986, 5179, 5372, 5565, 5758, 5951, 6143, 6336, 6529, 6722, 6915, 7108, 7301, 7493, 7686, 7879, 8072, 8265, 8458,
                                    8651, 8843, 9036, 9229, 9422, 9615, 9808, 10001, 10193, 10386, 10579, 10772, 10965, 11158, 11351, 11543, 11736, 11929, 12122, 12315, 12508, 12701, 12893, 13086, 13279, 13472, 13665, 13858, 14051, 14243, 14436, 14629, 14822, 15015, 15208]]
    hit2 = 0
    CD = 4
    TP成长 = 0.1
    TP上限 = 7

    形态 = ['普通', '箱子']

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '普通':
            self.hit2 = 0
        if 形态 == '箱子':
            self.hit2 = 1


class 技能2(被动技能):
    名称 = '次元扭曲装置'
    所在等级 = 20
    等级上限 = 20
    基础等级 = 10

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        elif self.等级 <= 10:
            return round(1.05 + 0.01 * self.等级, 5)
        else:
            return round(1.15 + 0.02 * (self.等级-10), 5)


class 技能3(主动技能):
    名称 = '次元：跃迁'
    所在等级 = 20
    等级上限 = 30
    学习间隔 = 3
    等级精通 = 20
    MP = [20, 70]
    data0 = [int(i*1.198*1.105) for i in [0, 5540, 6423, 7306, 8189, 9072, 9956, 10839, 11722, 12605, 13488, 14371, 15255, 16138,
                                          17021, 17904, 18787, 19671, 20554, 21437, 22320, 23203, 24087, 24970, 25853, 26736, 27619, 28503, 29386, 30269, 31152]]
    hit0 = 1
    CD = 15.0
    CDdata = [15.0, 15.0, 14.8, 14.7, 14.5, 14.4, 14.2, 14.0, 13.9, 13.8, 13.6, 13.4, 13.3, 13.1, 13.0,
              12.8, 12.7, 12.5, 12.4, 12.2, 12.0, 11.9, 11.7, 11.6, 11.4, 11.3, 11.1, 11.0, 10.8, 10.7, 10.5]

    def 等效CD(self, **argv):
        self.CD = self.CDdata[self.等级]
        if self.等级 <= 30:
            self.CD = self.CDdata[self.等级]
        else:
            self.CD = 10.5
        return super().等效CD(**argv)


class 技能4(主动技能):
    名称 = '次元：虚影'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [20, 210]
    data0 = [int(i*1.197*1.093) for i in [0, 2959, 3259, 3559, 3859, 4160, 4460, 4760, 5060, 5360, 5661, 5961, 6261, 6561, 6861, 7162, 7462, 7762, 8062, 8362, 8663, 8963, 9263, 9563, 9864, 10164, 10464, 10764, 11064, 11365, 11665, 11965, 12265, 12565, 12866,
                                          13166, 13466, 13766, 14066, 14367, 14667, 14967, 15267, 15567, 15868, 16168, 16468, 16768, 17069, 17369, 17669, 17969, 18269, 18570, 18870, 19170, 19470, 19770, 20071, 20371, 20671, 20971, 21271, 21572, 21872, 22172, 22472, 22773, 23073, 23373, 23673]]
    hit0 = 1
    TP成长 = 0.10
    TP上限 = 7
    CD = 5.0


class 技能5(主动技能):
    名称 = '乖离：禁忌之奈雅丽'
    所在等级 = 20
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [30, 420]
    # 放养倍率有误，不过占比极低可以不管，以后也可以删掉
    data0 = [int(i*1.197*1.108) for i in [0, 910, 1002, 1093, 1186, 1279, 1370, 1463, 1555, 1647, 1740, 1832, 1925, 2017, 2108, 2201, 2294, 2385, 2478, 2570, 2662, 2755, 2847, 2940, 3032, 3123, 3216, 3309, 3400, 3493, 3585, 3677, 3770,
                                          3862, 3955, 4047, 4138, 4231, 4324, 4415, 4508, 4600, 4692, 4785, 4877, 4970, 5062, 5153, 5246, 5337, 5430, 5523, 5615, 5707, 5800, 5892, 5985, 6077, 6168, 6261, 6352, 6445, 6538, 6630, 6722, 6815, 6907, 7000, 7091, 7183, 7276]]
    hit0 = 1
    CD = 50
    TP成长 = 0.10
    TP上限 = 7
    关联技能 = ["所有"]

    def 独立攻击力倍率进图(self, 武器类型):
        return 1.10


class 技能6(主动技能):
    名称 = '次元：离子束'
    所在等级 = 25
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [35, 350]
    # 不强化
    data0 = [int(i*1.198*1.093) for i in [0, 659, 726, 793, 859, 926, 993, 1060, 1127, 1194, 1261, 1328, 1394, 1461, 1528, 1595, 1662, 1729, 1796, 1863, 1929, 1996, 2063, 2130, 2197, 2264, 2331, 2398, 2465, 2531, 2598, 2665, 2732,
                                          2799, 2866, 2933, 3000, 3066, 3133, 3200, 3267, 3334, 3401, 3468, 3535, 3601, 3668, 3735, 3802, 3869, 3936, 4003, 4070, 4137, 4203, 4270, 4337, 4404, 4471, 4538, 4605, 4672, 4738, 4805, 4872, 4939, 5006, 5073, 5140, 5207, 5274]]
    hit0 = 6
    # 强化
    data1 = [int(i*1.198*1.093) for i in [0, 5121, 5641, 6160, 6680, 7199, 7719, 8239, 8758, 9278, 9797, 10317, 10836, 11356, 11876, 12395, 12915, 13434, 13954, 14474, 14993, 15513, 16032, 16552, 17071, 17591, 18111, 18630, 19150, 19669, 20189, 20709, 21228, 21748,
                                          22267, 22787, 23306, 23826, 24346, 24865, 25385, 25904, 26424, 26944, 27463, 27983, 28502, 29022, 29541, 30061, 30581, 31100, 31620, 32139, 32659, 33178, 33698, 34218, 34737, 35257, 35776, 36296, 36816, 37335, 37855, 38374, 38894, 39413, 39933, 40453, 40972]]
    hit1 = 1
    TP成长 = 0.10
    TP上限 = 7
    CD = 7

    形态 = ["强化", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '普通':
            self.hit0 = 6
            self.hit1 = 0
        if 形态 == '强化':
            self.hit0 = 0
            self.hit1 = 1


class 技能7(主动技能):
    名称 = '次元：万花镜'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [180, 1512]
    # 不强化
    data0 = [int(i*1.198) for i in [0, 2017, 2222, 2427, 2631, 2836, 3041, 3245, 3450, 3655, 3859, 4064, 4269, 4473, 4678, 4883, 5087, 5292, 5497, 5702, 5906, 6111, 6316, 6520, 6725, 6930, 7134, 7339, 7544, 7748, 7953, 8158, 8362, 8567, 8772, 8977,
                                    9181, 9386, 9591, 9795, 10000, 10205, 10409, 10614, 10819, 11023, 11228, 11433, 11638, 11842, 12047, 12252, 12456, 12661, 12866, 13070, 13275, 13480, 13684, 13889, 14094, 14298, 14503, 14708, 14913, 15117, 15322, 15527, 15731, 15936, 16141]]
    hit0 = 4
    # 强化
    data1 = [int(i*1.198) for i in [0, 1619, 1784, 1948, 2112, 2277, 2441, 2605, 2770, 2934, 3098, 3263, 3427, 3591, 3756, 3920, 4084, 4249, 4413, 4577, 4742, 4906, 5070, 5235, 5399, 5563, 5728, 5892, 6056, 6221, 6385, 6549, 6714, 6878, 7042,
                                    7207, 7371, 7535, 7700, 7864, 8028, 8193, 8357, 8521, 8686, 8850, 9014, 9178, 9343, 9507, 9671, 9836, 10000, 10164, 10329, 10493, 10657, 10822, 10986, 11150, 11315, 11479, 11643, 11808, 11972, 12136, 12301, 12465, 12629, 12794, 12958]]
    hit1 = 4
    CD = 10
    TP成长 = 0.10
    TP上限 = 7

    形态 = ["强化", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '普通':
            self.hit0 = 4
            self.hit1 = 0
        if 形态 == '强化':
            self.hit0 = 0
            self.hit1 = 1


class 技能8(主动技能):
    名称 = '乖离：魅魔之舞'
    所在等级 = 30
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60
    MP = [185, 1526]
    data0 = [int(i*1.197*1.108) for i in [0, 212, 234, 256, 277, 299, 320, 342, 364, 385, 407, 428, 450, 472, 493, 515, 536, 558, 580, 601, 623, 644, 666, 688, 709, 731, 752, 774, 796, 817, 839, 861, 882, 904, 925, 947,
                                          969, 990, 1012, 1033, 1055, 1077, 1098, 1120, 1141, 1163, 1185, 1206, 1228, 1249, 1271, 1293, 1314, 1336, 1357, 1379, 1401, 1422, 1444, 1465, 1487, 1509, 1530, 1552, 1573, 1595, 1617, 1638, 1660, 1681, 1703]]
    hit0 = 15
    data1 = [int(i*1.197*1.108) for i in [0, 3622, 3989, 4357, 4724, 5092, 5459, 5827, 6194, 6562, 6929, 7297, 7664, 8032, 8399, 8767, 9134, 9502, 9869, 10237, 10604, 10972, 11339, 11707, 12074, 12442, 12809, 13177, 13544, 13912, 14279, 14647, 15014, 15382, 15749,
                                          16117, 16484, 16852, 17219, 17587, 17954, 18322, 18689, 19057, 19424, 19792, 20159, 20527, 20894, 21262, 21629, 21997, 22364, 22732, 23099, 23467, 23834, 24202, 24569, 24937, 25304, 25672, 26039, 26407, 26774, 27142, 27509, 27877, 28244, 28612, 28979]]
    hit1 = 1
    CD = 7
    TP成长 = 0.10
    TP上限 = 7


class 技能9(主动技能):
    名称 = '次元：粒子风暴'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    # 不强化
    data0 = [int(i*1.259*1.105) for i in [0, 2860, 3150, 3440, 3730, 4020, 4311, 4601, 4891, 5181, 5471, 5762, 6052, 6342, 6632, 6922, 7212, 7503, 7793, 8083, 8373, 8663, 8953, 9244, 9534, 9824, 10114, 10404, 10694, 10985, 11275, 11565, 11855, 12145, 12436,
                                          12726, 13016, 13306, 13596, 13886, 14177, 14467, 14757, 15047, 15337, 15627, 15918, 16208, 16498, 16788, 17078, 17368, 17659, 17949, 18239, 18529, 18819, 19110, 19400, 19690, 19980, 20270, 20560, 20851, 21141, 21431, 21721, 22011, 22301, 22592, 22882]]
    hit0 = 3
    # 强化
    data1 = [int(i*1.259*1.105) for i in [0, 10953, 12064, 13175, 14286, 15397, 16509, 17620, 18731, 19842, 20953, 22065, 23176, 24287, 25398, 26509, 27620, 28732, 29843, 30954, 32065, 33176, 34288, 35399, 36510, 37621, 38732, 39844, 40955, 42066, 43177, 44288, 45399,
                                          46511, 47622, 48733, 49844, 50955, 52067, 53178, 54289, 55400, 56511, 57623, 58734, 59845, 60956, 62067, 63178, 64290, 65401, 66512, 67623, 68734, 69846, 70957, 72068, 73179, 74290, 75402, 76513, 77624, 78735, 79846, 80957, 82069, 83180, 84291, 85402, 86513, 87625]]
    hit1 = 1
    CD = 16
    是否有护石 = 1
    TP成长 = 0.10
    TP上限 = 5

    MP = [185, 1526]
    无色消耗 = 1

    形态 = ["强化", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if "次元：粒子风暴" in char.护石栏:
            形态 == '强化'
        if 形态 == '普通':
            self.hit0 = 3
            self.hit1 = 0
        if 形态 == '强化':
            self.hit0 = 0
            self.hit1 = 1

    def 装备护石(self):
        self.倍率 *= 1.31
        self.hit0 = 0
        self.hit1 = 1


class 技能10(主动技能):
    名称 = '次元：时空磁场'
    所在等级 = 35
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    data0 = [int(i*1.198*1.11) for i in [0, 3857, 4248, 4639, 5031, 5422, 5813, 6205, 6596, 6987, 7379, 7770, 8161, 8553, 8944, 9335, 9727, 10118, 10509, 10901, 11292, 11683, 12075, 12466, 12857, 13249, 13640, 14031, 14423, 14814, 15205, 15597, 15988, 16379, 16771,
                                         17162, 17553, 17945, 18336, 18727, 19118, 19510, 19901, 20292, 20684, 21075, 21466, 21858, 22249, 22640, 23032, 23423, 23814, 24206, 24597, 24988, 25380, 25771, 26162, 26554, 26945, 27336, 27728, 28119, 28510, 28902, 29293, 29684, 30076, 30467, 30858]]
    hit0 = 2
    TP成长 = 0.10
    TP上限 = 5
    CD = 15

    MP = [160, 1344]
    无色消耗 = 1


class 技能11(主动技能):
    名称 = '乖离：异界蜂群'
    所在等级 = 40
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    # 20 + 6
    data0 = [int(i*1.197*1.105) for i in [0, 797, 878, 959, 1040, 1121, 1202, 1283, 1364, 1445, 1526, 1607, 1688, 1769, 1849, 1930, 2011, 2092, 2173, 2254, 2335, 2416, 2497, 2578, 2659, 2740, 2821, 2902, 2983, 3064, 3144, 3225, 3306,
                                          3387, 3468, 3549, 3630, 3711, 3792, 3873, 3954, 4035, 4116, 4197, 4278, 4359, 4439, 4520, 4601, 4682, 4763, 4844, 4925, 5006, 5087, 5168, 5249, 5330, 5411, 5492, 5573, 5653, 5734, 5815, 5896, 5977, 6058, 6139, 6220, 6301, 6382]]
    hit0 = 20
    data1 = [int(i*1.197*1.105) for i in [0, 169, 186, 204, 221, 238, 255, 273, 290, 307, 324, 341, 359, 376, 393, 410, 428, 445, 462, 479, 496, 514, 531, 548, 565, 583, 600, 617, 634, 651, 669, 686, 703, 720,
                                          738, 755, 772, 789, 806, 824, 841, 858, 875, 893, 910, 927, 944, 961, 979, 996, 1013, 1030, 1047, 1065, 1082, 1099, 1116, 1134, 1151, 1168, 1185, 1202, 1220, 1237, 1254, 1271, 1289, 1306, 1323, 1340, 1357]]
    hit1 = 6
    CD = 25
    是否有护石 = 1
    TP成长 = 0.10
    TP上限 = 5

    无色消耗 = 1
    MP = [350, 3080]

    def 装备护石(self):
        self.hit0 = 23
        self.倍率 *= 1.14
        self.CDR *= 0.9


class 技能12(主动技能):
    名称 = '次元：粒子波'
    所在等级 = 45
    等级上限 = 70
    学习间隔 = 2
    等级精通 = 60

    # 一类裂隙
    data0 = [int(i*1.198*1.129) for i in [0, 1047, 1154, 1259, 1365, 1472, 1577, 1684, 1791, 1895, 2002, 2109, 2214, 2321, 2428, 2534, 2639, 2746, 2853, 2958, 3064, 3171, 3276, 3383, 3490, 3594, 3701, 3808, 3913, 4020, 4127, 4231, 4338,
                                          4445, 4550, 4657, 4763, 4868, 4975, 5082, 5187, 5294, 5400, 5505, 5612, 5719, 5826, 5930, 6037, 6144, 6249, 6356, 6462, 6567, 6674, 6781, 6886, 6993, 7099, 7204, 7311, 7418, 7523, 7629, 7736, 7841, 7948, 8055, 8159, 8266, 8373]]
    hit0 = 10
    # 二类裂隙
    data1 = [int(i*1.198*1.129) for i in [0, 742, 817, 893, 968, 1043, 1119, 1194, 1269, 1345, 1420, 1495, 1571, 1646, 1721, 1796, 1872, 1947, 2022, 2098, 2173, 2248, 2324, 2399, 2474, 2550, 2625, 2700, 2776, 2851, 2926, 3002, 3077,
                                          3152, 3228, 3303, 3378, 3454, 3529, 3604, 3680, 3755, 3830, 3906, 3981, 4056, 4131, 4207, 4282, 4357, 4433, 4508, 4583, 4659, 4734, 4809, 4885, 4960, 5035, 5111, 5186, 5261, 5337, 5412, 5487, 5563, 5638, 5713, 5789, 5864, 5939]]
    hit1 = 20
    CD = 40.
    是否有护石 = 1
    TP成长 = 0.10
    TP上限 = 5

    MP = [350, 3080]
    无色消耗 = 2

    形态 = ["强化", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '普通':
            self.hit0 = 10
            self.hit1 = 20
        if 形态 == '强化':
            self.hit0 = 0
            self.hit1 = 30

    def 装备护石(self):
        self.倍率 *= 1.10
        self.倍率 *= 1.17


class 技能13(被动技能):
    名称 = '虚空之力'
    所在等级 = 48
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.025 + 0.02 * self.等级, 5)


class 技能14(主动技能):
    名称 = '乖离：扭曲之恐惧'
    所在等级 = 50
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    # 出现
    data0 = [int(i*1.211*1.104) for i in [0, 6430, 7921, 9412, 10903, 12394, 13885, 15377, 16868, 18359, 19850, 21341, 22832, 24323, 25814, 27305, 28796, 30288, 31779, 33270, 34761, 36252, 37743, 39234, 40725, 42216, 43708, 45199, 46690, 48181, 49672, 51163, 52654, 54145,
                                          55636, 57127, 58619, 60110, 61601, 63092, 64583, 66074, 67565, 69056, 70547, 72039, 73530, 75021, 76512, 78003, 79494, 80985, 82476, 83967, 85458, 86950, 88441, 89932, 91423, 92914, 94405, 95896, 97387, 98878, 100370, 101861, 103352, 104843, 106334, 107825, 109316]]
    #基础 = 4458.014
    #成长 = 1345.666
    hit0 = 1
    # 触须
    data1 = [int(i*1.211*1.104) for i in [0, 1397, 1722, 2046, 2370, 2694, 3018, 3342, 3666, 3991, 4315, 4639, 4963, 5287, 5611, 5936, 6260, 6584, 6908, 7232, 7556, 7880, 8205, 8529, 8853, 9177, 9501, 9825, 10150, 10474, 10798, 11122, 11446, 11770, 12094,
                                          12419, 12743, 13067, 13391, 13715, 14039, 14364, 14688, 15012, 15336, 15660, 15984, 16308, 16633, 16957, 17281, 17605, 17929, 18253, 18578, 18902, 19226, 19550, 19874, 20198, 20522, 20847, 21171, 21495, 21819, 22143, 22467, 22792, 23116, 23440, 23764]]
    #基础2 = 968.875
    #成长2 = 292.508
    hit1 = 22
    # 结束爆发
    data2 = [int(i*1.211*1.104) for i in [0, 25721, 31685, 37650, 43614, 49579, 55543, 61508, 67472, 73436, 79401, 85365, 91330, 97294, 103259, 109223, 115187, 121152, 127116, 133081, 139045, 145009, 150974, 156938, 162903, 168867, 174832, 180796, 186760, 192725, 198689, 204654, 210618, 216583, 222547,
                                          228511, 234476, 240440, 246405, 252369, 258333, 264298, 270262, 276227, 282191, 288156, 294120, 300084, 306049, 312013, 317978, 323942, 329907, 335871, 341835, 347800, 353764, 359729, 365693, 371657, 377622, 383586, 389551, 395515, 401480, 407444, 413408, 419373, 425337, 431302, 437266]]
    #基础3 = 17829.336 *1.1
    #成长3 = 5382.970 *1.1
    hit2 = 1
    CD = 145

    MP = [1200, 10080]
    无色消耗 = 5

    def 等效百分比(self, **argv):
        if self.等级 >= 3:
            self.power2 = 1.1
        return super().等效百分比(**argv)


class 技能15(主动技能):
    名称 = '次元：思维聚爆'
    所在等级 = 60
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    # 持续伤害
    data0 = [int(i*1.198*1.107) for i in [0, 563, 620, 676, 733, 790, 848, 905, 962, 1019, 1076, 1133, 1190, 1248, 1305, 1362, 1419, 1476, 1533, 1589, 1646, 1704, 1761, 1818, 1875, 1932, 1989, 2046, 2103, 2161, 2218, 2275, 2332, 2389,
                                          2446, 2502, 2559, 2617, 2674, 2731, 2788, 2845, 2902, 2959, 3017, 3074, 3131, 3188, 3245, 3302, 3359, 3415, 3473, 3530, 3587, 3644, 3701, 3758, 3815, 3873, 3930, 3987, 4044, 4101, 4158, 4215, 4273, 4329, 4386, 4443, 4500]]
    #基础 = 451.063
    #成长 = 50.909
    hit0 = 1
    # 爆发伤害
    data1 = [int(i*1.198*1.107) for i in [0, 18181, 20025, 21870, 23714, 25558, 27403, 29247, 31092, 32936, 34781, 36625, 38469, 40314, 42159, 44003, 45847, 47691, 49536, 51381, 53225, 55069, 56913, 58759, 60603, 62447, 64291, 66135, 67981, 69825, 71669, 73513, 75359, 77203, 79047,
                                          80891, 82735, 84581, 86425, 88269, 90113, 91958, 93803, 95647, 97491, 99335, 101180, 103025, 104869, 106713, 108558, 110402, 112247, 114091, 115936, 117780, 119624, 121469, 123313, 125158, 127002, 128846, 130691, 132536, 134380, 136224, 138069, 139913, 141758, 143602, 145446]]
    #基础2 = 14580.815
    #成长2 = 1646.227
    hit1 = 1
    CD = 30
    是否有护石 = 1
    TP成长 = 0.10
    TP上限 = 5

    MP = [400, 1120]
    无色消耗 = 1

    形态 = ["打满", "瞬爆"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '打满':
            self.hit0 = 12
            self.hit1 = 1
        if 形态 == '瞬爆':
            self.hit0 = 1
            self.hit1 = 1

    def 装备护石(self):
        self.power1 = 1.25
        self.CDR *= 0.9
        self.倍率 *= 1.08


class 技能16(主动技能):
    名称 = '乖离：禁锢'
    所在等级 = 70
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [int(i*1.273*1.136) for i in [0, 33420, 36811, 40202, 43592, 46983, 50373, 53764, 57154, 60545, 63935, 67326, 70716, 74107, 77497, 80888, 84279, 87669, 91060, 94450, 97841, 101231, 104622, 108012, 111403, 114793, 118184, 121574, 124965, 128355, 131746, 135137, 138527, 141918, 145308,
                                          148699, 152089, 155480, 158870, 162261, 165651, 169042, 172432, 175823, 179214, 182604, 185995, 189385, 192776, 196166, 199557, 202947, 206338, 209728, 213119, 216509, 219900, 223290, 226681, 230072, 233462, 236853, 240243, 243634, 247024, 250415, 253805, 257196, 260586, 263977, 267367]]
    hit0 = 1
    CD = 50
    是否有护石 = 1
    TP成长 = 0.10
    TP上限 = 5

    MP = [900, 1820]
    无色消耗 = 3

    def 装备护石(self):
        self.倍率 *= 1.15


class 技能17(主动技能):
    名称 = '次元：奇点'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    # 普通
    data0 = [int(i*1.198*1.092) for i in [0, 27341, 30115, 32889, 35663, 38437, 41211, 43984, 46758, 49532, 52306, 55080, 57854, 60627, 63401, 66175, 68949, 71723, 74497,
                                          77270, 80044, 82818, 85592, 88366, 91139, 93913, 96687, 99461, 102235, 105009, 107782, 110556, 113330, 116104, 118878, 121652, 124425, 127199, 129973, 132747, 135521]]
    data1 = [int(i*1.198*1.092) for i in [0, 31598, 34804, 38010, 41215, 44421, 47627, 50832, 54038, 57244, 60449, 63655, 66861, 70066, 73272, 76478, 79683, 82889, 86095, 89300,
                                          92506, 95712, 98917, 102123, 105329, 108534, 111740, 114946, 118151, 121357, 124563, 127768, 130974, 134180, 137386, 140591, 143797, 147003, 150208, 153414, 156620]]
    hit0 = 1
    hit1 = 1
    # 强化
    data2 = [int(i*1.198*1.092) for i in [0, 7989, 8799, 9610, 10420, 11231, 12041, 12852, 13662, 14473, 15283, 16094, 16904, 17715, 18525, 19336, 20146, 20957, 21767,
                                          22578, 23388, 24199, 25009, 25820, 26630, 27441, 28251, 29062, 29872, 30683, 31493, 32304, 33114, 33925, 34735, 35546, 36356, 37167, 37977, 38788, 39598]]
    data3 = [int(i*1.198*1.092) for i in [0, 5326, 5866, 6406, 6947, 7487, 8027, 8568, 9108, 9648, 10189, 10729, 11269, 11810, 12350, 12890, 13431, 13971, 14511,
                                          15052, 15592, 16132, 16673, 17213, 17753, 18294, 18834, 19374, 19915, 20455, 20995, 21536, 22076, 22616, 23157, 23697, 24237, 24778, 25318, 25858, 26399]]
    hit2 = 0
    hit3 = 0
    CD = 40
    是否有护石 = 1

    MP = [580, 4500]
    无色消耗 = 3

    形态 = ["强化", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '普通':
            self.hit0 = 1
            self.hit1 = 1
            self.hit2 = 0
            self.hit3 = 0
        if 形态 == '强化':
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 4
            self.hit3 = 4

    def 装备护石(self):
        self.CDR *= 0.9
        self.倍率 *= 1.30


class 技能18(被动技能):
    名称 = '混沌源能石'
    所在等级 = 75
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.17 + 0.02 * self.等级, 5)


class 技能19(主动技能):
    名称 = '乖离：沉沦'
    所在等级 = 80
    等级上限 = 50
    学习间隔 = 2
    等级精通 = 40

    data0 = [int(i*1.197*1.104) for i in [0, 40782, 44919, 49056, 53194, 57331, 61468, 65606, 69743, 73880, 78017, 82155, 86292, 90429, 94567, 98704, 102841, 106979, 111116, 115253,
                                          119391, 123528, 127665, 131803, 135940, 140077, 144214, 148352, 152489, 156626, 160764, 164901, 169038, 173176, 177313, 181450, 185588, 189725, 193862, 198000, 202137]]
    #基础 = 32790.618
    #成长 = 3702.340
    hit0 = 1
    data1 = [int(i*1.197*1.104) for i in [0, 1359, 1497, 1634, 1772, 1910, 2048, 2186, 2324, 2462, 2600, 2738, 2875, 3013, 3151, 3289, 3427, 3565,
                                          3703, 3841, 3979, 4116, 4254, 4392, 4530, 4668, 4806, 4944, 5082, 5220, 5357, 5495, 5633, 5771, 5909, 6047, 6185, 6323, 6461, 6598, 6736]]
    #基础2 = 1090.657
    #成长2 = 123.333
    hit1 = 24
    CD = 45
    是否有护石 = 1

    MP = [800, 6000]
    无色消耗 = 5

    def 装备护石(self):
        self.倍率 *= 1.3


class 技能20(主动技能):
    名称 = '禁断之盛宴'
    所在等级 = 85
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    # 迷雾
    data0 = [int(i*1.212*1.107) for i in [0, 6623, 8158, 9694, 11230, 12766, 14302, 15837, 17373, 18909, 20445, 21980, 23516, 25052, 26588, 28124, 29659, 31195, 32731,
                                          34267, 35803, 37338, 38874, 40410, 41946, 43481, 45017, 46553, 48089, 49625, 51160, 52696, 54232, 55768, 57304, 58839, 60375, 61911, 63447, 64982, 66518]]
    hit0 = 10
    # 炮击
    data1 = [int(i*1.212*1.107) for i in [0, 5519, 6799, 8078, 9358, 10638, 11918, 13198, 14477, 15757, 17037, 18317, 19597, 20877, 22156, 23436, 24716, 25996, 27276,
                                          28556, 29835, 31115, 32395, 33675, 34955, 36234, 37514, 38794, 40074, 41354, 42634, 43913, 45193, 46473, 47753, 49033, 50313, 51592, 52872, 54152, 55432]]
    hit1 = 12
    # 普通炮击
    data2 = [int(i*1.212*1.107) for i in [0, 3294, 4058, 4822, 5587, 6351, 7115, 7879, 8643, 9407, 10171, 10935, 11699, 12463, 13227, 13991, 14755, 15519, 16283,
                                          17047, 17811, 18575, 19339, 20103, 20867, 21631, 22395, 23159, 23923, 24687, 25451, 26215, 26980, 27744, 28508, 29272, 30036, 30800, 31564, 32328, 33092]]
    hit2 = 18
    # 强化炮击
    data3 = [int(i*1.212*1.107) for i in [0, 3088, 3804, 4520, 5236, 5953, 6669, 7385, 8101, 8817, 9533, 10250, 10966, 11682, 12398, 13114, 13830, 14547, 15263,
                                          15979, 16695, 17411, 18127, 18844, 19560, 20276, 20992, 21708, 22424, 23141, 23857, 24573, 25289, 26005, 26722, 27438, 28154, 28870, 29586, 30302, 31019]]
    hit3 = 18
    # 终结
    data4 = [int(i*1.212*1.107) for i in [0, 109511, 134905, 160299, 185693, 211087, 236481, 261875, 287269, 312663, 338058, 363452, 388846, 414240, 439634, 465028, 490422, 515816, 541210,
                                          566604, 591998, 617392, 642786, 668180, 693574, 718968, 744362, 769756, 795150, 820544, 845938, 871332, 896726, 922120, 947514, 972908, 998302, 1023696, 1049090, 1074484, 1099878]]
    hit4 = 1
    CD = 180

    MP = [2500, 5000]
    无色消耗 = 10

    形态 = ["强化全", "强化简", "普通"]

    def 形态变更(self, 形态, char):
        if 形态 == '' and len(self.形态) > 0:
            形态 = self.形态[0]
        if 形态 == '强化全':
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 10
            self.hit3 = 17
            self.hit4 = 1
        if 形态 == '强化简':
            self.hit0 = 0
            self.hit1 = 0
            self.hit2 = 0
            self.hit3 = 17
            self.hit4 = 1
        if 形态 == '普通':
            self.hit0 = 10
            self.hit1 = 12
            self.hit2 = 0
            self.hit3 = 0
            self.hit4 = 0


class 技能21(主动技能):
    名称 = '乖离：边缘之兽'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [int(i*1.05) for i in [0, 191657, 211100, 230544, 249987, 269431, 288874, 308318, 327761, 347204, 366648, 386091, 405535, 424978, 444422, 463865, 483308, 502752, 522195, 541639, 561082, 580526, 599969, 619412, 638857, 658299, 677744, 697187, 716631, 736074, 755518, 774961, 794404, 813848, 833291, 852735,
                                   872178, 891622, 911065, 930508, 949952, 969395, 988839, 1008282, 1027726, 1047169, 1066612, 1086056, 1105499, 1124944, 1144387, 1163831, 1183274, 1202718, 1222161, 1241604, 1261048, 1280491, 1299935, 1319378, 1338822, 1358265, 1377708, 1397152, 1416595, 1436039, 1455482, 1474926, 1494369, 1513812, 1533256]]
    hit0 = 1
    data1 = [int(i*1.05) for i in [0, 400, 520, 640, 760, 880, 1000, 1120, 1240, 1360, 1480, 1600, 1720, 1840, 1960, 2080, 2200, 2320, 2440, 2560, 2680, 2800, 2920, 3040, 3160, 3280, 3400, 3520, 3640, 3760, 3880, 4000, 4120, 4240,
                                   4360, 4480, 4600, 4720, 4840, 4960, 5080, 5200, 5320, 5440, 5560, 5680, 5800, 5920, 6040, 6160, 6280, 6400, 6520, 6640, 6760, 6880, 7000, 7120, 7240, 7360, 7480, 7600, 7720, 7840, 7960, 8080, 8200, 8320, 8440, 8560, 8680]]
    hit1 = 1
    CD = 60.0

    MP = [1067, 8000]
    无色消耗 = 7


class 技能22(被动技能):
    名称 = '古史记忆'
    所在等级 = 95
    等级上限 = 50
    学习间隔 = 3
    等级精通 = 40

    关联技能 = ['所有']

    def 加成倍率(self, 武器类型):
        if self.等级 == 0:
            return 1.0
        else:
            return round(1.18 + 0.02 * self.等级, 5)


class 技能23(主动技能):
    名称 = '未明·次元崩坏'
    所在等级 = 100
    等级上限 = 50
    学习间隔 = 5
    等级精通 = 40

    data0 = [int(i*1.096) for i in [0, 75387, 92868, 110350, 127831, 145312, 162794, 180274, 197755, 215237, 232718, 250200, 267681, 285161, 302643, 320124, 337605, 355087, 372568, 390049, 407531, 425011, 442493, 459974, 477455, 494937, 512418, 529898, 547380, 564861, 582342, 599824, 617305, 634786, 652268,
                                    669748, 687230, 704711, 722192, 739674, 757155, 774636, 792118, 809598, 827079, 844561, 862042, 879523, 897005, 914485, 931967, 949448, 966929, 984411, 1001892, 1019373, 1036855, 1054335, 1071816, 1089298, 1106779, 1124260, 1141742, 1159222, 1176704, 1194185, 1211666, 1229148, 1246629, 1264110, 1281592]]
    hit0 = 1
    data1 = [int(i*1.096) for i in [0, 251292, 309563, 367833, 426104, 484375, 542645, 600916, 659187, 717458, 775728, 833999, 892270, 950541, 1008811, 1067082, 1125353, 1183624, 1241894, 1300165, 1358436, 1416707, 1474977, 1533248, 1591519, 1649789, 1708060, 1766331, 1824602, 1882872, 1941143, 1999414, 2057684, 2115955, 2174226,
                                    2232497, 2290768, 2349038, 2407309, 2465579, 2523850, 2582121, 2640392, 2698663, 2756934, 2815204, 2873474, 2931745, 2990016, 3048287, 3106558, 3164829, 3223100, 3281369, 3339640, 3397911, 3456182, 3514453, 3572724, 3630995, 3689264, 3747535, 3805806, 3864077, 3922348, 3980619, 4038890, 4097159, 4155430, 4213701, 4271972]]
    hit1 = 1
    data2 = [int(i*1.096) for i in [0, 43975, 54173, 64371, 74567, 84765, 94963, 105160, 115357, 125554, 135752, 145950, 156146, 166344, 176542, 186739, 196936, 207133, 217331, 227529, 237725, 247923, 258121, 268318, 278515, 288712, 298910, 309108, 319304, 329502, 339700, 349897, 360094, 370291,
                                    380489, 390687, 400883, 411081, 421279, 431476, 441673, 451870, 462068, 472266, 482462, 492660, 502858, 513055, 523253, 533449, 543647, 553845, 564041, 574239, 584437, 594634, 604832, 615028, 625226, 635424, 645620, 655818, 666016, 676213, 686411, 696607, 706805, 717003, 727199, 737397, 747595]]
    hit2 = 4
    CD = 290.0

    MP = [4028, 8056]
    无色消耗 = 15


class classChange(Character):
    def __init__(self):
        self.实际名称 = 'dimension_walker'
        self.名称 = '知源·次元行者'
        self.角色 = '魔法师(男)'

        self.职业 = '次元行者'
        self.武器选项 = ['扫把', '矛', '魔杖', '法杖', '棍棒']
        self.输出类型选项 = ['魔法固伤']
        self.防具精通属性 = ['智力']
        self.类型 = '魔法百分比'
        self.武器类型 = '扫把'
        self.防具类型 = '布甲'

        技能列表 = []
        技能序号 = {}
        i = 0
        while i >= 0:
            try:
                tem = eval('技能'+str(i)+'()')
                tem.基础等级计算()
                技能序号[tem.名称] = i
                技能列表.append(tem)
                i += 1
            except:
                i = -1

        self.技能栏 = 技能列表
        self.技能序号 = 技能序号
        self.buff = 1.850

        super().__init__()
